import gmpy2
import libnum

n1 = 18278456416897540360396258822757262982555755869670901090552498586949101988114819983049973792228149331753714211829150091366507963407709639602249698787433863615316934241223748268055507819756435927605756487582004688515855293842338007617018726192787272178786187989919650031295017445246608913808150370396832979736966944101019341527689214911779109999636349425823878126859829147994819384548777027669606291738366823809278767708461221830670665255418591083090040274616328116968600117656658246421927767060728182402210035045881818025673807969254883542917548511100917885959250620704515582518997559286168715792883861074220598943791
n2 = 14718281935692942246514344466960823739043788561815140598178699003630478731051901387468570752239748871701513260441416821474763710775757545770047001681689286764572928181308278425603577448081174829594272045737613383467853857541067932138008740271004046748970111915370497637083205151943216917589213000669827068183128735055853090146367442283033992973854093411154488547740107755082193303785575614939069343199774715111804373406251308943619862703275132627574605543897680349862262913772613627719842043981943797101165701793459771726617487555152346999588560213302046402911610106668235901710477454671759962352749028587857389680857
c1 = 14897512957877985291073451370997229971431611442234246383959378368138383843838602186764200234176467559404370286570662411222496252433014380640842874696486877004925614788148596161632851280090237300707166430170067495353446298066772402105814072501891920041154576728250668160351771877215919279860070607769304225631648712101695757447443748349446067746844910191804121935748134960309518439864721866967284850597357412411606643356342075119302860193616589493080428754805797969067310700610860435816047860794169521102300081676745004651672196010599021308459569165202732261338157558377669701207385936984772269758652310839805490426436
c2 = 8964679463182022749797829546680381147968492022695080270157954224365732346700186653596903802305955380468152204793914476872234000593338240036398422292867781937160592148807729413972520261014124973472761268000048797126209010105345911203497254239189500567762324829782091374108165308434410235044784878269559848498007708005049415987165881413527082350625816180534142506509426576438823347406737583570228393620002029592018404347050644682030278682484606748950839477932988072925403147456191170453590581297805161865533569937880834249663768378358974835993063581854638638010548705670806550267429609766941078881760115520503213998478
e = 65537

p = gmpy2.gcd(n1, n2)
print(p)
q1 = n1 // p
phi = (p - 1) * (q1 - 1)
d = gmpy2.invert(e, phi)
m1 = pow(c1, d, n1)
print(libnum.n2s(int(m1)))

p = gmpy2.gcd(n1, n2)
print(p)
q1 = n2 // p
phi = (p - 1) * (q1 - 1)
d = gmpy2.invert(e, phi)
m1 = pow(c2, d, n2)
print(libnum.n2s(int(m1)))
